VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "ClassFixture"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Option Explicit

Private mDescription As ClassDescriptor
Private mHolder As New ObjectHolder
Private mComposite As New CompositeMethodCaller
Private mNumOfAsserts As Integer

Public Sub init(desc As ClassDescriptor)
Set mDescription = desc
End Sub
Public Sub add(forward As Object)
mComposite.add forward
End Sub
Public Sub forward(notify As Object)
notify.StartClass Me
mHolder.object = CreateObject(fullName)
assignNumOfAsserts
mComposite.forward notify
mHolder.object = Nothing
notify.EndClass
End Sub
Private Property Get fullName() As String
fullName = mDescription.fullName
End Property

Public Property Get name() As Variant
name = mDescription.name
End Property

Public Property Get numOfMethods() As Integer
numOfMethods = mComposite.Count
End Property
Public Property Get NumOfAsserts() As Integer
NumOfAsserts = mNumOfAsserts
End Property
Public Property Get elapsedTime() As Double
elapsedTime = mComposite.elapsedTime
End Property

Public Property Get holder() As ObjectHolder
Set holder = mHolder
End Property

Private Sub assignNumOfAsserts()
If mDescription.hasNumOfAsserts Then
    mNumOfAsserts = mHolder.object.NumOfAsserts
End If
End Sub

Public Property Get description() As ClassDescriptor
Set description = mDescription
End Property

Private Sub Class_Initialize()
mComposite.init
End Sub
